package main

import (
	"fmt"
	"io"
	"net/http"

	"os"
)

func DownloadFile(url string, filePath string) (int64, error) {
	// 创建一个HTTP请求来获取文件
	resp, err := http.Get(url)
	if err != nil {
		return 0, err
	}
	defer resp.Body.Close()

	// 检查响应状态码是否为200 OK
	if resp.StatusCode != http.StatusOK {
		return 0, fmt.Errorf("http get failed with status %s", resp.Status)
	}

	// 打开或创建一个文件用于写入下载的数据
	out, err := os.Create(filePath)
	if err != nil {
		return 0, err
	}
	defer out.Close()

	// 使用io.Copy将响应体内容复制到文件中，它会处理大文件的读写
	return io.Copy(out, resp.Body)
}
